Graphics processing systems are sometimes configured as Single Instruction Multiple Thread (SIMT) machines that have multiple threads that execute the same function. In particular a group, in blocks of threads is assigned to the same processor. A block may further be divided into units of thread scheduling (e.g., units of work). A warp is a group of parallel threads that executes a single instruction from the same instruction stream. An individual warp may, for example, have 32 threads. A warp is also a unit of thread scheduling. A warp also has associated shared resources that are allocated to a warp, include an area in register file.
A warp is an organizational technique appropriate to SIMT style computations where a multiplicity of threads executes the same instruction from the same instruction stream. The warp concept allows the management of these threads to be simplified and streamlined. The warp concept manages sharing of resources over a number of threads and may include:                sharing the instruction being executed,        sharing the constant scratch register file,        sharing an area in a register file,        sharing the scalar register file,        sharing memory management, texture or memory resource descriptors, and        sharing instruction scheduling resources.        
Conventionally the scheduling of the warps and the associated memory allocation in a register file is generally optimized for performance and/or memory usage. The warps are typically loaded in the register file in a random order between memory boundaries of the physically separate units of Static Random Access Memory (SRAM) in order to optimize performance. However, the random order of the scheduling optimizes performance but requires the SRAM to remain in an active state that consumes significant power.
While warp is a common term for a unit of thread scheduling promoted by the Nvidia Corporation a similar unit of thread scheduling is known as a wavefront or a wave, where the AMD Corporation has promoted the wavefront as a unit of thread scheduling having 64 threads. The problems of scheduling waves are essentially the same as for warps, aside from trivial differences in implementation. In any case the precise number of threads in a warp or a wave is somewhat arbitrary and is subject to possible further revision as the industry evolves.